Home | |||||||||||||||||||||||||||||||||||
MultiXTpm gSoap Enhancer - MSEOpen Source/Free Software |
|||||||||||||||||||||||||||||||||||
MultiXTpm gSoap Enhancer is an application built on top MultiXTpm Application Server. Its purpose is to assist gSoap developers in implementing a large, scalable, load balanced system with as little effort as developing only the service routines. It frees the developer from all concerns relating to communications and transport issues, threads, processes and sessions management. | |||||||||||||||||||||||||||||||||||
As a MultiXTpm based application, MSE enhances gSoap by providing the following features without any programming effort required from the developer:
|
|||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||
MSE is an application layer router. In general this means that it is a standard application running on a host, anticipating all incoming traffic on predefined ports, and after parsing the received data for some information, it routes the entire message to a predefined set of applications/processes based on some data found in the header of the incoming message. After the target application has processed the data and replied with some other data, MSE routes back the response to the sender of the request. | |||||||||||||||||||||||||||||||||||
MSE, as an application layer router, supports the HTTP/SOAP as the application layer protocol. This means that when MSE is started, it starts listening on one or more preconfigured ports for incoming HTTP requests. Once a connection is established, MSE waits for the entire HTTP header to arrive. Based on the header that was received, MSE extracts 3 pieces of information:
|
|||||||||||||||||||||||||||||||||||
ArchitectureMSE runtime environment comprises of 3 processes at the minimum:
|
|||||||||||||||||||||||||||||||||||
MultiXWSFEThis process acts as a Listener/Transport handler. It is responsible for the actual communication with HTTP/SOAP client. When a new connection is established, it creates a new session object, it waits for incoming HTTP/SOAP messages and when a full message is received, it is forwarded to MultiXTpm process (in the context of the session created earlier) with a special indication of the SOAPAction and the internal logical path of the Web Service application. MultiXTpm in turn forwards the request to the appropriate process for the actual processing of the request. When a response comes from the Web Service application, it is forwarded back to the client. The connection is kept open, waiting for the next request, or disconnect from the client or an idle timer expires in which case the connection is aborted. This process is multithreaded and all communication activities are in NOWAIT manner, so it does not block on any call, so it can theoretically process unlimited number of connections simultaneously. This process can have more then one instance where each instance can manage a different range of ports. All instances can run on a single machine or can be divided between multiple machines.Since MultiXWSFEhandles all communications with Web Services Clients, it provides two security related features to the system. SSL Support and HTTP Basic Authentication. SSL Support SSL Support is provided by MultiXTpm thru configuration of the Link objects. Since all connectivity to the Clients is done thru MultiXWSFE Links, this means that SSL related issues start and end in MultiXWSFE. When a new SSL connection is established with the Client, MultiXWSFE handles all the handshake and certificates exchange if required and moves on to the data transfer phase. When requests are forwarded from MultiXWSFE to MultiXTpm, they are forwarded as clear text, after being decoded by MultiXWSFE. When the requests propagate to the gSoap Web Service DLL, they get there in clear text, which means that no SSL support is required by the gSoap compiled units. A Developer should compile all source code without the "WITH_OPENSSL" define, the decision whether to use SSL or not is done thru configuration at runtime and not at compile time. Even more, the implementer may decide to require SSL per a group of web services, per specific web service DLL and if configured correctly, on function by function basis within a Web Service DLL. The most evident implication of this architecture is the ability to separate the Front End Process from the gSoap DLLs and put these processes on different machines, so SSL processing does not consume resources meant to be used by the applications themselves. To get more information on how to use SSL in MultiXTpm environment, please look at SSL_Support.htm located at MultiXTpm Application Server directory. HTTP Basic Authentication When MultiXWSFE receives the full SOAP message from the Web Service Client, it enables the application level code to check for user name and password, and if required, the application level code can request MultiX API to challenge the Client to send the user name and password. If a developer wishes to implement Authentication and Authorization in one centralized place, rather than in each Web Service DLL, Modifying the MultiXWSFE code is the best way to do it. Just go to the source file "MultiXWSFEServerLink.cpp" locate the function "CMultiXWSFEServerLink::IsAuthenticated()" and modify it to support whatever authentication and authorization mechanisms you choose. |
|||||||||||||||||||||||||||||||||||
MultiXTpmThis is the main process within this architecture. When it starts, it reads a preconfigured XML file where all configuration data is stored in. Among other things, it starts the first instances of the other processes. When the other processes are started, it provides them with some configuration data, specifically, it provides MultiXWSFE the information about the TCP/IP ports to listen on for incoming HTTP/SOAP requests. MultiXTpm's main responsibilities are:
|
|||||||||||||||||||||||||||||||||||
MultiXWSServerThis process is actually the Web Services Application. It's main function is to receive requests from MultiXTpm or from MultiXWSFE directly, load the appropriate user specified DLL and call the user specified function for that specific call. This process can have one or more instances running at the same time and it can run on a single or multiple machines. The number and the location of the processes is determined by MultiXTpm based on predefined configuration. |
|||||||||||||||||||||||||||||||||||
Figure 1 above illustrates the structure of MultiXTpm gSoap Enhancer and the data flow. Each web service call passes thru few phases starting from connection establishment and ending with the connection closing. Between these two phases the Client is said to be "in a session". Following is a brief description of the various phases. | |||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||
gSoap sample DLLsMSE includes 3 smaples to show how to to compile and use gSoap modules.
One important thin to notice in these examples is that all code to handle sockets and threads is totaly eliminated.
|
|||||||||||||||||||||||||||||||||||
HTTP/SOAP Requests HandlingAs mentioned before, MSE uses gSoap toolkit for parsing the SOAP header in MultiXWSFE and it assumes gSoap based DLLs when calling the Web Service functions. This means that the DLLs provided by the developer should be based on gSoap and that all gSoap code should be included in the DLL. MultiXWSServer uses some gSoap functions to initialize the "soap" structure and it assumes that the DLLs provided include these functions. The reason it is done this way, to avoid problems that could arise by using different versions of gSoap. It is advisable to compile the DLLs using the same gSoap version that is used when compiling MultiXWSFE and MultiXWSServer. |
|||||||||||||||||||||||||||||||||||
Download informationMultiXTpm Application Server is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.MultiXTpm Application Server is distributed in source code format and it supports: Windows OS, Linux, Solaris and HP Nonstop Server OSS. The source code is packed in ZIP file and can be downloaded from SourceForge.net. To Access the Download Page at SourceForge.net you may click Here or Navigate to http://sourceforge.net/projects/multixtpm |
|||||||||||||||||||||||||||||||||||
Contact informationFor more information, Bug Reports, Feature Requests, and Support Requests, please use:SourceForge.net tracker or SourceForge.net Project Forums or MultiXTpm group at Yahoo Groups. or you may send an email to: Moshe Shitrit |
|||||||||||||||||||||||||||||||||||
Home |